#ifndef SYMBOLEVALUE_H
#define SYMBOLEVALUE_H

#include <string.h>
#include <iostream>
using namespace std;

#include "Symbole.h"
#include "Arbre.h"

class SymboleValue: public Symbole, // un symbole valué est un symbole qui a une valeur, définie ou pas
		public Noeud
{ // et c'est aussi une feuille de l'arbre abstrait
	public:
		SymboleValue(Symbole s); // construit un symbole valué à partir d'un symbole existant s
		~SymboleValue()
		{
		}
		void afficher(unsigned short indentation = 0); // affiche le symbole en tant que noeud de l'arbre
		inline int getValeur()
		{
			return valeur;
		} // accesseur
		inline void setValeur(int valeur)
		{
			this->valeur = valeur;
			defini = true;
		} // accesseur
		inline bool estDefini()
		{
			return defini;
		} // accesseur

		friend ostream & operator <<(ostream & cout, SymboleValue symb); // affiche un symbole value sur cout

	private:
		bool defini; // indique si la valeur du symbole est définie
		int valeur; // valeur du symbole si elle est définie, zéro sinon

};

#endif /* SYMBOLEVALUE_H */
